//引入封装好的接口
import {
  getUserList,
  getUserCount
} from '@/util/axios'
const state = {
  userList: [],
  size: 2, //页面显示的条数
  page: 1, //页面初始值
  count: 0 //总数
}
const getters = {
  //返回管理员列表
  getUserList(state) {
    return state.userList
  },
  //返回总数
  getCount(state) {
    return state.count
  },
  //返回当前显示条数
  getSize(state) {
    return state.size
  }
}
const mutations = {
  REQ_USERLIST(state, payload) {
    state.userList = payload
  },
  REQ_GETCOUNT(state, payload) {
    state.count = payload
  },
  //修改页码
  CHANGE_PAGE(state, payload) {
    state.page = payload
  }
}
const actions = {
  //封装一个获取菜单列表的行动
  getUserListAction(context) {
    getUserList({
      size: context.state.size,
      page: context.state.page
    }).then(res => {
      console.log(res);
      if (res.data.code == 200) {
        context.commit('REQ_USERLIST', res.data.list)
        let list = res.data.list ? res.data.list : []
        // 删除的时候,会出现bug,我们要重新修改page
        //思路:第一个 page 不是 1 并旦，当数组为空会出现 bug
        if (context.state.page != 1 && list.length == 0) {
          //调取修改 page 的行动并且传递 page-1
          context.dispatch('changePageAction', context.state.page - 1)
        }
      }
    })
  },
  //封装一个获取总数的行动
  getCountAction({
    commit
  }) {
    getUserCount().then(res => {
      if (res.data.code == 200) {
        commit('REQ_GETCOUNT', res.data.list[0].total)
      }
    })
  },
  //封装一个切换页码的行动
  changePageAction(context, payload) {
    //第一、当用户切换页码，我们要修改page
    context.commit('CHANGE_PAGE', payload)
    //第二、重新调用列表
    context.dispatch('getUserListAction')
  }
}
export default {
  state,
  getters,
  mutations,
  actions,
  namespaced: true
}
